package cn.starlightsoftware.sherly.service.user;

import cn.starlightsoftware.sherly.controller.admin.user.vo.UserPageReqVO;
import cn.starlightsoftware.sherly.controller.admin.user.vo.UserRoleUpdateReqVO;
import cn.starlightsoftware.sherly.controller.admin.user.vo.UserSaveReqVO;
import cn.starlightsoftware.sherly.model.PageResult;
import cn.starlightsoftware.sherly.db.model.permission.UserRoleDO;
import cn.starlightsoftware.sherly.db.model.user.UserDO;

import javax.validation.Valid;
import java.util.List;

/**
 * @author 谷子毅
 */
public interface UserService {

    /**
     * 用户分页
     * @param reqVO
     * @return
     */
    PageResult<UserDO> page(UserPageReqVO reqVO);

    /**
     * 用户新增
     * @param reqVO
     */
    void save(@Valid UserSaveReqVO reqVO);

    /**
     * 用户详情
     * @param userId
     * @return
     */
    UserDO detail(String userId);

    /**
     * 用户删除
     *
     * @param userId
     */
    void delete(String userId);

    /**
     * 用户修改
     * @param reqVO
     */
    void update(@Valid UserSaveReqVO reqVO);

    /**
     * 用户角色详情
     * @param userId
     * @return
     */
    List<UserRoleDO> userRoleList(String userId);

    /**
     * 用户角色修改
     * @param reqVO
     */
    void userRoleUpdate(UserRoleUpdateReqVO reqVO);
}
